home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / modula2 / drucker / lpr / cfginsta.mod < prev    next >
Encoding:
Text File  |  1994-09-22  |  5.1 KB  |  137 lines

  1. MODULE CfgInstall;
  2.  
  3. (************************************************************************
  4.  * Install-Programm für WordPlus-CFG-Dateien,                           *
  5.  * muß auch für LPR-Modula-2-Druckertreiber verwendet werden.           *
  6.  *                                                                      *
  7.  * Dieses Modusl greift auch auf dieses Druckertreibermodul zurück. Wenn*
  8.  * die vorgesehenen 2kBytes Größe für die CFG-Datei nicht ausreichen,   *
  9.  * muß das ARRAY TDruckSteuer.a in DRUCKTRE.DEF entsprechend erweitert  *
  10.  * werden, maximal jedoch [0..16383] = 16kBytes.                        *
  11.  *                                                                      *
  12.  * (c) 9/1989 by Uwe Ischebeck, Ringstr. 31, 6900 Heidelberg            *
  13.  ************************************************************************)
  14.  
  15. IMPORT GEMDOS;
  16.  
  17. FROM Filename IMPORT filename, fullname, empty, 
  18.                      SelectFilename, compose, GetDriveAndPath;
  19.                      
  20. FROM Strings IMPORT Length, Concat;
  21.  
  22. FROM Install IMPORT EBuffOv, CfgError, 
  23.                     CfgAnalyse, ConfigPrinter, CfgInstall;
  24.  
  25. FROM Application IMPORT Init, Terminate;
  26.  
  27. FROM AES IMPORT FormAlert, GrafMouse;
  28.  
  29. FROM SYSTEM IMPORT ADDRESS;
  30.  
  31. VAR Maske, DateiName1, DateiName2 : filename;
  32.     DateiName1Str, DateiName2Str : fullname;
  33.     BoxString1 : ARRAY[0..255] OF CHAR;
  34.     BoxString2 : ARRAY[0..79] OF CHAR;
  35.     ende, abbruch,ok : BOOLEAN;
  36.     res, button, handle : INTEGER;
  37.     c : CHAR;
  38.     Rsc1, Rsc2 : ADDRESS;
  39.     mode : (hex,cfg);
  40.     ausgabe : (Drucker, Datei);
  41.     
  42. CONST QUELLDAT = 0; (* TREE *)
  43.       ZIELDAT = 1;  (* TREE *)   
  44.     
  45. BEGIN
  46.   Init;
  47.   Maske:=empty; 
  48.   
  49.   DateiName1:=empty;
  50.   GetDriveAndPath(Maske);
  51.  
  52.   BoxString1:="[0][Installationsprogramm für|WordPlus-Druckeranpassungen |V1.2,  (c) 1989 U.Ischebeck|";
  53.   BoxString2:="Hex-Datei installieren: HEX|CFG-Datei analysieren:  CFG][ HEX | CFG | nix ]";
  54.   Concat(BoxString1,BoxString2,BoxString1);
  55.   button:=FormAlert(1,BoxString1); 
  56.   IF button<3 THEN
  57.     IF button=1 THEN Maske.ext:="HEX"; mode:=hex
  58.                 ELSE Maske.ext:="CFG"; mode:=cfg END;
  59.     DateiName1:=Maske;
  60.     SelectFilename(Maske, DateiName1, abbruch);
  61.     abbruch:=abbruch OR (Length(DateiName1.name)=0) OR (Length(DateiName1.ext)=0); 
  62.     IF NOT abbruch THEN
  63.       IF mode=cfg THEN
  64.         BoxString1:="[2][Soll die Ausgabe in eine|Datei oder auf den Drucker|";
  65.         BoxString2:="erfolgen?][ Datei | Drucker | nix ]";
  66.         Concat(BoxString1,BoxString2,BoxString1);
  67.         button:=FormAlert(1,BoxString1); 
  68.       ELSE button:=1 END;
  69.       CASE button OF
  70.         1: Maske:=DateiName1;
  71.            IF mode=cfg THEN Maske.ext:="HEX"
  72.                        ELSE Maske.ext:="CFG" END;
  73.            DateiName2:=Maske;
  74.            Maske.name:="";
  75.            SelectFilename(Maske, DateiName2, ende);
  76.            abbruch:=ende OR (Length(DateiName2.name)=0) OR (Length(DateiName2.ext)=0);
  77.            ausgabe:=Datei;
  78.       | 2: ausgabe:=Drucker; abbruch:=FALSE;
  79.            WHILE NOT(GEMDOS.PrnOS() OR abbruch) DO
  80.              BoxString1:="[1][Drucker streikt!][ nochmal | später ]";
  81.              abbruch:=FormAlert(1,BoxString1)=2;
  82.            END;
  83.       ELSE abbruch:=TRUE END;
  84.     END;
  85.     IF NOT abbruch THEN                    (* es wurde eine Quell-Datei ausgewählt *)
  86.       GrafMouse(2,NIL);
  87.       compose(DateiName1,Maske,DateiName1Str);
  88.       IF ausgabe=Datei THEN
  89.         compose(DateiName2,Maske,DateiName2Str);
  90.       END;
  91.       IF mode=hex THEN (* Hex-Datei installieren *)
  92.         CfgInstall(DateiName1Str,DateiName2Str);
  93.         ok:=CfgError=0 ;
  94.         IF NOT ok THEN
  95.           IF CfgError=EBuffOv THEN
  96.             BoxString1:="[1][-  : Zu viele Bytes in | der CFG-Datei.][ OK ]";
  97.           ELSE
  98.             BoxString1:="[1][-  : Fehler im Installprogramm][ OK ]";
  99.           END;
  100.         END;
  101.       ELSE (* mode:=cfg: CFG-Datei analysieren *)
  102.         IF ausgabe=Datei THEN
  103.           GEMDOS.SFirst(DateiName2Str,0,handle);
  104.           IF handle=0 THEN
  105.             ok:=GEMDOS.Delete(DateiName2Str);
  106.           END;
  107.           GEMDOS.Create(DateiName2Str,0,handle);
  108.         ELSE handle:=3 END;
  109.         ConfigPrinter(handle,DateiName1Str);
  110.         CfgAnalyse;
  111.         IF ausgabe=Datei THEN ende:=GEMDOS.Close(handle)
  112.                          ELSE ende:=TRUE END;
  113.         ok:=(CfgError=0) OR (GEMDOS.ErrorNo=0) OR NOT(ende);
  114.         IF NOT ok THEN
  115.           BoxString1:="[1][-  : Fehler im Analyseprogramm][ OK ]";
  116.         END;
  117.       END;
  118.       GrafMouse(0,NIL);
  119.       IF ok THEN
  120.         IF ausgabe=Datei THEN
  121.           BoxString1:="[1][Datei erstellt:|"; 
  122.           Concat(BoxString1,DateiName2Str,BoxString1);
  123.         ELSE BoxString1:="[1][Ausgabe beendet " END;
  124.         Concat(BoxString1,"][ OK ]",BoxString1);
  125.         res:=FormAlert(1,BoxString1);
  126.       ELSE
  127.         IF CfgError=0 THEN CfgError:=GEMDOS.ErrorNo END;
  128.         BoxString1[5]:=CHR( ABS((CfgError DIV 10)) + 30H );
  129.         BoxString1[6]:=CHR( ABS((CfgError MOD 10)) + 30H );
  130.         res:=FormAlert(1,BoxString1);
  131.       END;
  132.     END (* if not abbruch *);
  133.   END;
  134. (*  ResourceFree; *)
  135.   Terminate;
  136. END CfgInstall.
  137.